书写背景:电脑是M1芯片的,oracle数据库的镜像没有对应的版本,导致无法使用docker安装oracle数据库。

# 一、环境

# 1.1 相关信息

电脑信息:M1芯片,MacOS Monterey 12.2.1

服务器信息:腾讯云轻量级服务器

系统信息:CentOS Linux release 7.9.2009 (Core)

数据库管理软件: DBeaver、Navicat

Linux命令工具:Tabby

# 二、docker安装

# 2.1 安装docker

#yum包更新到最新
sudo yum -y update

#安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
sudo yum install -y yum-utils device-mapper-persistent-data lvm2

#设置yum源为阿里云
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

#安装docker  ce:开源版(免费版) ee:企业版(收费版)
sudo yum -y install docker-ce

#安装完查看docker版本
docker -v

# 2.2 设置ustc的镜像

ustc是老牌的linux镜像服务提供者了,还在遥远的ubuntu 5.04版本的时候就在用。ustc的docker镜像加速器速度很快。

ustc docker mirror的优势之一就是不需要注册,是真正的公共服务。https://lug.ustc.edu.cn/wiki/mirrors/help/docker

![image-20221012150456646](centos7 利用docker安装部署oracle11.assets/image-20221012150456646.png)

#创建文件夹
sudo mkdir -p /etc/docker

#切换目录
cd /etc/docker

#创建并编辑daemon.json文件
vim /etc/docker/daemon.json  

#重新加载
sudo systemctl daemon-reload

#重启docker
sudo systemctl restart docker

在daemon.json文件中输入如下内容:


{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}

# 2.3 Docker的启动与停止

#详细命令
#启动docker:
systemctl start docker

#停止docker:
systemctl stop docker
  
#重启docker:
systemctl restart docker

#查看docker状态:
systemctl status docker

#开机启动:  
systemctl enable docker

#检查镜像是否为科大的
docker info

#查看docker帮助文档
docker help

#注意:systemctl命令是系统服务管理器指令

![image-20221012153220408](centos7 利用docker安装部署oracle11.assets/image-20221012153220408.png)

# 三、docker安装oracle11

# 3.1 安装oracle11

#获取阿里oracle镜像
docker pull registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g

#启动容器
docker run -d -p 1521:1521 --name oracle11g --restart=always registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g

#查看容器名称和ID
docker ps

#进入容器
docker exec -it oracle11g bash

#切换到root账户(默认进入之后是oracle账户 输入密码:helowin
su root

#编辑环境变量/etc/profile文件
vi /etc/profile

# 在/etc/profile文件最后写上下面内容
export ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_2
export ORACLE_SID=helowin
export PATH=$ORACLE_HOME/bin:$PATH

#加载环境变量
source /etc/profile 

#创建软连接
 ln -s $ORACLE_HOME/bin/sqlplus /usr/bin
 
 #oracle用户
 su - oracle
 
 #登陆
sqlplus /nolog

#登陆
conn /as sysdba

#创建用户sys 是用户,sc0tt321密码  你自己设置
alter user sys identified by sc0tt321;

#设置密码有效期为无限制
alter profile default limit PASSWORD_LIFE_TIME UNLIMITED;

#创建用户(可选,根据需要)
create user mike identified by mima;

#授权
grant connect,resource,dba to mike;


#创建用户(可选,根据需要)
create user C##ZQTIS identified by mima;

#授权
grant connect,resource,dba to C##ZQTIS;

#查看版本号
SELECT * from v$version;

# 3.2 开放安全端口

在服务器的控制台创建新的规则。

![image-20221012163553967](centos7 利用docker安装部署oracle11.assets/image-20221012163553967.png)

# 3.3 使用Navicat进行测试

![image-20221012164540697](centos7 利用docker安装部署oracle11.assets/image-20221012164540697.png)

问题: 创建C##ZQTIS报错

“试图创建一个通用用户,必需要用C##或者c##开头”

报错信息:

ERROR at line 1:

ORA-65094: invalid local user or role name

解决方法:

alter session set "_ORACLE_SCRIPT"=true;
alter session set container=PDBORCL;